import configdata from './config'
import cache from './cache'

module.exports = {
    config: function (name) {
        var info = null;
        if (name) {
            var name2 = name.split("."); //字符分割
            if (name2.length > 1) {
                info = configdata[name2[0]][name2[1]] || null;
            } else {
                info = configdata[name] || null;
            }
            if (info == null) {
                let web_config = cache.get("web_config");
                if (web_config) {
                    if (name2.length > 1) {
                        info = web_config[name2[0]][name2[1]] || null;
                    } else {
                        info = web_config[name] || null;
                    }
                }
            }
        }
        return info;
    },
    post: function (url, data, header) {
        header = header || "application/x-www-form-urlencoded";
        url = this.config("APIHOST") + url;
		let token = uni.getStorageSync("token");
        return new Promise((succ, error) => {
            uni.request({
                url: url,
                data: data,
                method: "POST",
                header: {
                    "content-type": header,
					 "token": token
                },
                success: function (result) {
					if(result.data.code == 401&&token) {
						uni.removeStorageSync("token")
						uni.removeStorageSync("userId")
						uni.removeStorageSync("phone")
						uni.removeStorageSync("openid")
						uni.removeStorageSync("userName")
						uni.removeStorageSync("relation")
						uni.removeStorageSync("relation_id")
						uni.removeStorageSync("isInvitation")
						uni.removeStorageSync("zhiFuBao")
						uni.removeStorageSync("zhiFuBaoName")
						
						uni.showToast({
							title: '用户信息失效，请重新登录！',
							icon: 'none'
						})
					} 
                    succ.call(self, result.data)
                },
                fail: function (e) {
                    error.call(self, e)
                }
            })
        })
    },
	postApi: function (url, data, header) {
	    header = header || "application/x-www-form-urlencoded";
	    url = this.config("APIHOST5") + url;
		// let token = uni.getStorageSync("token");
	    return new Promise((succ, error) => {
	        uni.request({
	            url: url,
	            data: data,
	            method: "POST",
				crossDomain:true,
	            header: {
	                "content-type": header,
	            },
	            success: function (result) {
					if(result.data.code == 401&&token) {
						uni.removeStorageSync("token")
						uni.removeStorageSync("userId")
						uni.removeStorageSync("phone")
						uni.removeStorageSync("openid")
						uni.removeStorageSync("userName")
						uni.removeStorageSync("relation")
						uni.removeStorageSync("relation_id")
						uni.removeStorageSync("isInvitation")
						uni.removeStorageSync("zhiFuBao")
						uni.removeStorageSync("zhiFuBaoName")
						
						uni.showToast({
							title: '用户信息失效，请重新登录！',
							icon: 'none'
						})
					} 
	                succ.call(self, result.data)
	            },
	            fail: function (e) {
	                error.call(self, e)
	            }
	        })
	    })
	},
    postT: function (url, data, header) {
        header = header || "application/x-www-form-urlencoded";
        url = this.config("APIHOST1") + url;
        let token = uni.getStorageSync("token");
        if (token) {
            return new Promise((succ, error) => {
                uni.request({
                    url: url,
                    data: data,
                    method: "POST",
                    header: {
                        "content-type": header,
                        "token": token
                    },
                    success: function (result) {
                        if(result.data.code == 401&&token) {
                        	uni.removeStorageSync("token")
                        	uni.removeStorageSync("userId")
                        	uni.removeStorageSync("phone")
                        	uni.removeStorageSync("openid")
                        	uni.removeStorageSync("userName")
                        	uni.removeStorageSync("relation")
                        	uni.removeStorageSync("relation_id")
                        	uni.removeStorageSync("isInvitation")
                        	uni.removeStorageSync("zhiFuBao")
                        	uni.removeStorageSync("zhiFuBaoName")
                        	
                        	uni.showToast({
                        		title: '用户信息失效，请重新登录！',
                        		icon: 'none'
                        	})
                        } 
                        succ.call(self, result.data)
                    },
                    fail: function (e) {
                        error.call(self, e)
                    }
                })
            })
        } else {
            return new Promise((succ, error) => {
                uni.request({
                    url: url,
                    data: data,
                    method: "POST",
                    header: {
                        "content-type": header,
                    },
                    success: function (result) {
                        succ.call(self, result.data)
                    },
                    fail: function (e) {
                        error.call(self, e)
                    }
                })
            })
        }
    },
	postT2: function (url, data, header) {
	    header = header || "application/x-www-form-urlencoded";
	    url = this.config("APIHOST6") + url;
	    let token = uni.getStorageSync("token");
	    if (token) {
	        return new Promise((succ, error) => {
	            uni.request({
	                url: url,
	                data: data,
	                method: "POST",
	                header: {
	                    "content-type": header,
	                    "token": token
	                },
	                success: function (result) {
	                    if(result.data.code == 401&&token) {
	                    	uni.removeStorageSync("token")
	                    	uni.removeStorageSync("userId")
	                    	uni.removeStorageSync("phone")
	                    	uni.removeStorageSync("openid")
	                    	uni.removeStorageSync("userName")
	                    	uni.removeStorageSync("relation")
	                    	uni.removeStorageSync("relation_id")
	                    	uni.removeStorageSync("isInvitation")
	                    	uni.removeStorageSync("zhiFuBao")
	                    	uni.removeStorageSync("zhiFuBaoName")
	                    	
	                    	uni.showToast({
	                    		title: '用户信息失效，请重新登录！',
	                    		icon: 'none'
	                    	})
	                    } 
	                    succ.call(self, result.data)
	                },
	                fail: function (e) {
	                    error.call(self, e)
	                }
	            })
	        })
	    } else {
	        return new Promise((succ, error) => {
	            uni.request({
	                url: url,
	                data: data,
	                method: "POST",
	                header: {
	                    "content-type": header,
	                },
	                success: function (result) {
	                    succ.call(self, result.data)
	                },
	                fail: function (e) {
	                    error.call(self, e)
	                }
	            })
	        })
	    }
	},
	postH: function (url, data, header) {
	    header = header || "application/json";
	    url = this.config("APIHOST3") + url;
	    let token = uni.getStorageSync("mToken");
	    if (token) {
	        return new Promise((succ, error) => {
	            uni.request({
	                url: url,
	                data: data,
	                method: "POST",
	                header: {
	                    "content-type": header,
	                    "accessToken": token
	                },
	                success: function (result) {
	                    if(result.data.code == 401&&token) {
	                    	uni.removeStorageSync("token")
	                    	uni.removeStorageSync("userId")
	                    	uni.removeStorageSync("phone")
	                    	uni.removeStorageSync("openid")
	                    	uni.removeStorageSync("userName")
	                    	uni.removeStorageSync("relation")
	                    	uni.removeStorageSync("relation_id")
	                    	uni.removeStorageSync("isInvitation")
	                    	uni.removeStorageSync("zhiFuBao")
	                    	uni.removeStorageSync("zhiFuBaoName")
	                    	
	                    	uni.showToast({
	                    		title: '用户信息失效，请重新登录！',
	                    		icon: 'none'
	                    	})
	                    } 
	                    succ.call(self, result.data)
	                },
	                fail: function (e) {
	                    error.call(self, e)
	                }
	            })
	        })
	    } else {
	        return new Promise((succ, error) => {
	            uni.request({
	                url: url,
	                data: data,
	                method: "POST",
	                header: {
	                    "content-type": header,
	                },
	                success: function (result) {
	                    succ.call(self, result.data)
	                },
	                fail: function (e) {
	                    error.call(self, e)
	                }
	            })
	        })
	    }
	},
    postJson: function (url, data, header) {
        header = header || "application/json";
        url = this.config("APIHOST") + url;
        let token = uni.getStorageSync("token");
        if (token) {
            return new Promise((succ, error) => {
                uni.request({
                    url: url,
                    data: data,
                    method: "POST",
					responseType: 'stream', // 设置响应类型为流
					enableChunked: true,  //配置这里
                    header: {
                        "content-type": header,
                        "token": token
                    },
                    success: function (result) {
                        resolve(result)
                        succ.call(self, result.data)
                    },
                    fail: function (e) {
                        error.call(self, e)
                    },
					// 监听数据接收进度
					onProgressUpdate: (res) => {
					    if (res.progressEvent === 'data') {
					      // 这里接收到了新的数据块，可以处理数据
					      console.log('接收到新数据块:', res.data);
					    }
					}
                })
            })
        } else {
            return new Promise((succ, error) => {
                uni.request({
                    url: url,
                    data: data,
                    method: "POST",
					enableChunked: true,  //配置这里
                    header: {
                        "content-type": header,
                    },
                    success: function (result) {
                        succ.call(self, result.data)
                    },
                    fail: function (e) {
                        error.call(self, e)
                    }
                })
            })
        }
    },
	postJsonNW: function (url, data, header) {
	    header = header || "application/json";
	    url = this.config("APIHOST") + url;
	    let token = uni.getStorageSync("token");
	    if (token) {
	        return new Promise((succ, error) => {
	            uni.request({
	                url: url,
	                data: data,
	                method: "POST",
	                header: {
	                    "content-type": header,
	                    "token": token
	                },
	                success: function (result) {
	                    if(result.data.code == 401&&token) {
	                    	uni.removeStorageSync("token")
	                    	uni.removeStorageSync("userId")
	                    	uni.removeStorageSync("phone")
	                    	uni.removeStorageSync("openid")
	                    	uni.removeStorageSync("userName")
	                    	uni.removeStorageSync("relation")
	                    	uni.removeStorageSync("relation_id")
	                    	uni.removeStorageSync("isInvitation")
	                    	uni.removeStorageSync("zhiFuBao")
	                    	uni.removeStorageSync("zhiFuBaoName")
	                    	
	                    	uni.showToast({
	                    		title: '用户信息失效，请重新登录！',
	                    		icon: 'none'
	                    	})
	                    } 
	                    succ.call(self, result.data)
	                },
	                fail: function (e) {
	                    error.call(self, e)
	                }
	            })
	        })
	    } else {
	        return new Promise((succ, error) => {
	            uni.request({
	                url: url,
	                data: data,
	                method: "POST",
	                header: {
	                    "content-type": header,
	                },
	                success: function (result) {
	                    succ.call(self, result.data)
	                },
	                fail: function (e) {
	                    error.call(self, e)
	                }
	            })
	        })
	    }
	},
    postJsonH: function (url, data, header) {
        header = header || "application/json";
        url = this.config("APIHOST2") + url;
        let token = uni.getStorageSync("token");
        if (token) {
            return new Promise((succ, error) => {
                uni.request({
                    url: url,
                    data: data,
                    method: "POST",
                    header: {
                        "content-type": header,
                        "token": token,
						"Authorization": "Bearer;aQcjyF-B9E5vEczusfQtdqj6O6OKdnci"
                    },
                    success: function (result) {
                        if(result.data.code == 401&&token) {
                        	uni.removeStorageSync("token")
                        	uni.removeStorageSync("userId")
                        	uni.removeStorageSync("phone")
                        	uni.removeStorageSync("openid")
                        	uni.removeStorageSync("userName")
                        	uni.removeStorageSync("relation")
                        	uni.removeStorageSync("relation_id")
                        	uni.removeStorageSync("isInvitation")
                        	uni.removeStorageSync("zhiFuBao")
                        	uni.removeStorageSync("zhiFuBaoName")
                        	
                        	uni.showToast({
                        		title: '用户信息失效，请重新登录！',
                        		icon: 'none'
                        	})
                        } 
                        succ.call(self, result.data)
                    },
                    fail: function (e) {
                        error.call(self, e)
                    }
                })
            })
        } else {
            return new Promise((succ, error) => {
                uni.request({
                    url: url,
                    data: data,
                    method: "POST",
                    header: {
                        "content-type": header,
                    },
                    success: function (result) {
                        succ.call(self, result.data)
                    },
                    fail: function (e) {
                        error.call(self, e)
                    }
                })
            })
        }
    },
	postJsonXF: function (url, data, header) {
	    header = header || "application/json";
	    url = this.config("APIHOST4") + url;
	    let token = 'token';
		const arrayBuffer = new Uint8Array("/static/ai/p5.png"); //先将本地图片路径转换成array类型
		let base64Img = uni.arrayBufferToBase64(arrayBuffer);  //再转换成base64类型
		let image_base64 = base64Img;
	    if (token) {
	        return new Promise((succ, error) => {
	            uni.request({
	                url: url,
	                data: data,
	                method: "POST",
	                header: {
	                    "content-type": header,
						"token": token,
	                    "app_id": "39695ef0"
	                },
					parameter: {
						"vmr": {
							"stream": {
								"protocol": "xrtc"
							},
							"avatar_id": "x_girl",
							"width": 512,
							"height": 853,
						}
					},
					payload: {
						"avatar_image": {
							"encoding": "png",
							"image": image_base64,
							"status": 3
						}
					},
	                success: function (result) {
	                    if(result.data.code == 401&&token) {
	                    	uni.removeStorageSync("token")
	                    	uni.removeStorageSync("userId")
	                    	uni.removeStorageSync("phone")
	                    	uni.removeStorageSync("openid")
	                    	uni.removeStorageSync("userName")
	                    	uni.removeStorageSync("relation")
	                    	uni.removeStorageSync("relation_id")
	                    	uni.removeStorageSync("isInvitation")
	                    	uni.removeStorageSync("zhiFuBao")
	                    	uni.removeStorageSync("zhiFuBaoName")
	                    	
	                    	uni.showToast({
	                    		title: '用户信息失效，请重新登录！',
	                    		icon: 'none'
	                    	})
	                    } 
	                    succ.call(self, result.data)
	                },
	                fail: function (e) {
	                    error.call(self, e)
	                }
	            })
	        })
	    } else {
	        return new Promise((succ, error) => {
	            uni.request({
	                url: url,
	                data: data,
	                method: "POST",
	                header: {
	                    "content-type": header,
	                },
	                success: function (result) {
	                    succ.call(self, result.data)
	                },
	                fail: function (e) {
	                    error.call(self, e)
	                }
	            })
	        })
	    }
	},
    getT: function (url, data, header) {
        header = header || "application/x-www-form-urlencoded";
        url = this.config("APIHOST1") + url;
        let token = uni.getStorageSync("token");
        if (token) {
            return new Promise((succ, error) => {
                uni.request({
                    url: url,
                    data: data,
                    method: "GET",
                    header: {
                        "content-type": header,
                        "token": token
                    },
                    success: function (result) {
						if(result.data.code == 401&&token) {
							uni.removeStorageSync("token")
							uni.removeStorageSync("userId")
							uni.removeStorageSync("phone")
							uni.removeStorageSync("openid")
							uni.removeStorageSync("userName")
							uni.removeStorageSync("relation")
							uni.removeStorageSync("relation_id")
							uni.removeStorageSync("isInvitation")
							uni.removeStorageSync("zhiFuBao")
							uni.removeStorageSync("zhiFuBaoName")
							
							uni.showToast({
								title: '用户信息失效，请重新登录！',
								icon: 'none'
							})
						} 
                        succ.call(self, result.data)
                    },
                    fail: function (e) {
                        error.call(self, e)
                    }
                })
            })
        } else {
            return new Promise((succ, error) => {
                uni.request({
                    url: url,
                    data: data,
                    method: "GET",
                    header: {
                        "content-type": header
                    },
                    success: function (result) {
                        succ.call(self, result.data)
                    },
                    fail: function (e) {
                        error.call(self, e)
                    }
                })
            })
        }
    },
    get: function (url, data, header) {
        header = header || "application/x-www-form-urlencoded";
        url = this.config("APIHOST") + url;
		let token = uni.getStorageSync("token");
        return new Promise((succ, error) => {
            uni.request({
                url: url,
                data: data,
                method: "GET",
                header: {
                    "content-type": header,
					 "token": token
                },
                success: function (result) {
					if(result.data.code == 401&&token) {
						uni.removeStorageSync("token")
						uni.removeStorageSync("userId")
						uni.removeStorageSync("phone")
						uni.removeStorageSync("openid")
						uni.removeStorageSync("userName")
						uni.removeStorageSync("relation")
						uni.removeStorageSync("relation_id")
						uni.removeStorageSync("isInvitation")
						uni.removeStorageSync("zhiFuBao")
						uni.removeStorageSync("zhiFuBaoName")
						
						uni.showToast({
							title: '用户信息失效，请重新登录！',
							icon: 'none'
						})
					} 
					succ.call(self, result.data)
                },
                fail: function (e) {
                    error.call(self, e)
                }
            })
        })
    },
	getApi: function (url, data, header) {
	    header = header || "application/x-www-form-urlencoded";
	    url = this.config("APIHOST5") + url;
		let token = uni.getStorageSync("token");
	    return new Promise((succ, error) => {
	        uni.request({
	            url: url,
	            data: data,
	            method: "GET",
	            header: {
	                "content-type": header,
	            },
	            success: function (result) {
					if(result.data.code == 401&&token) {
						uni.removeStorageSync("token")
						uni.removeStorageSync("userId")
						uni.removeStorageSync("phone")
						uni.removeStorageSync("openid")
						uni.removeStorageSync("userName")
						uni.removeStorageSync("relation")
						uni.removeStorageSync("relation_id")
						uni.removeStorageSync("isInvitation")
						uni.removeStorageSync("zhiFuBao")
						uni.removeStorageSync("zhiFuBaoName")
						
						uni.showToast({
							title: '用户信息失效，请重新登录！',
							icon: 'none'
						})
					} 
					succ.call(self, result.data)
	            },
	            fail: function (e) {
	                error.call(self, e)
	            }
	        })
	    })
	},
	getMsg: function (url, data, header) {
	    header = header || "application/x-www-form-urlencoded";
	    url = this.config("APIHOST") + url;
		let token = uni.getStorageSync("token");
	    return new Promise((succ, error) => {
	        uni.request({
	            url: url,
	            data: data,
	            method: "GET",
	            header: {
	                "content-type": header,
					 "token": token
	            },
	            success: function (result) {
					if(result.data.code == 401&&token) {
						uni.removeStorageSync("token")
						uni.removeStorageSync("userId")
						uni.removeStorageSync("phone")
						uni.removeStorageSync("openid")
						uni.removeStorageSync("userName")
						uni.removeStorageSync("relation")
						uni.removeStorageSync("relation_id")
						uni.removeStorageSync("isInvitation")
						uni.removeStorageSync("zhiFuBao")
						uni.removeStorageSync("zhiFuBaoName")
						
						uni.showToast({
							title: '用户信息失效，请重新登录！',
							icon: 'none'
						})
					} 
	                succ.call(self, result.data)
	            },
	            fail: function (e) {
	                error.call(self, e)
	            }
	        })
	    })
	}
}
